package com.practice.springboot_01_zwj.mapper;

import com.practice.springboot_01_zwj.entity.AccountInfo;
import com.practice.springboot_01_zwj.entity.CloudNetwork;
import com.practice.springboot_01_zwj.entity.ThreeHundred;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface AccountInfoMapper {
    List<AccountInfo> selectAll(@Param("acName") String acName);
    // 根据用户名查询账户信息
    AccountInfo findByUsername(String username);
    //根据归属地查询账户信息
    List<AccountInfo> selectCityName(@Param("cityName") String cityName);

    // 新增：根据用户ID查询账户信息
    AccountInfo findByUserId(Integer userId);
    // 新增：根据用户名查询账户信息（包含acName）
    @Select("SELECT * FROM accountInfo WHERE userName = #{userName}")
    AccountInfo findByUsernameWithAcName(String userName);
    List<AccountInfo> findByUsernames(@Param("userName") List<String> userName);
    /**
     * 根据账号名获取账号数据
     * @param userName
     *      账号名称
     * @return
     *      返回null，表示根据账号名无法获取账号数据
     *      返回非null，表示可以根据账号名查找对应账号数据
     */
    public AccountInfo getAccountInfoByName(String userName);
    //带密码登录功能
    public AccountInfo getAccountInfoByNameAndPass(String userName,String password);
    //更改密码
    // 在AccountInfoMapper接口中添加
    int updatePassword(@Param("userName") String userName, @Param("password") String password);


    /**
     * 添加账号信息
     * @param accountInfo
     *   账号信息对象
     * @return
     *   成功返回1
     *   失败返回0
     */
    public int addAccountInfo(AccountInfo accountInfo);

    /**
     * 修改账号信息
     * @param accountInfo
     *   账号信息对象
     * @return
     *   成功返回1
     *   失败返回0
     */
    public int updateAccountInfo(AccountInfo accountInfo);

    /**
     * 逻辑删除账号信息
     * @param userId
     *    账号id
     * @return
     *    成功返回1
     *    失败返回0
     */
    public int deleteAccountInfo(Integer userId);

    List<AccountInfo> selectAcNameAndUserName(@Param("acName") String acName,
                                                @Param("userName") String userName,@Param("cityName") String cityName);
}
